The present disclosure relates in general to web applications, and in particular to techniques for facilitating navigation in a web-based data entry grid.
With the ubiquity of web browsers and broadband Internet access, many types of software that previously existed only as traditional desktop applications are now available in web application form. Generally speaking, a web application is a software application that includes a server component and a client component, where the server component is hosted on a remote server (e.g., a web and/or application server) and the client component is rendered/executed in a common web browser. Examples of popular web applications include email, calendar, and so on.
Certain types of web applications, such as spreadsheets and other kinds of business applications, make use of a data entry grid for receiving and presenting data to a user. As used herein, a data entry grid is a UI component comprising a group of cells that are arranged in a tabular or other similar format. Each cell in the grid can be rendered with an input control for receiving user input (if user focus is currently on the cell), or as a read-only field (if user focus is not currently on the cell). Thus, by navigating into a particular cell in the grid, a user can update the contents of that cell.
One issue with existing web applications that incorporate data entry grids relates to the interaction between the client-side web browser and the server. In particular, current implementations require that the web browser access the server for each navigation event between two cells (in order to, e.g., submit any data entered into the first cell and retrieve input control information for the second cell). This roundtrip to and from the server can be time consuming, and thus problematic in several scenarios. For instance, consider a situation where a user enters data in cell 1×1 of an M×N data entry grid, and then wishes to enter data in cell 10×12 (i.e., nine columns to the right and eleven rows down) without entering any data in the intervening cells. If the user uses, e.g., the arrow keys on his/her keyboard to navigate in a cell-by-cell manner from cell 1×1 to cell 10×12, the UI will “pause” for a brief period of time at each cell as the web browser accesses the server and then renders an input control in the cell. This pausing during navigation can be irritating and significantly reduce the user's efficiency.
Some existing applications may attempt to mitigate this slow navigation behavior by allowing for direct navigation between non-adjacent cells using an alternative input device (e.g., a mouse or touch-sensitive screen). However, in scenarios that require a significant amount of alphanumeric data entry, many users prefer to use a keyboard as their sole input device.